/*
 * Sales_data.h
 *
 *  Created on: 2017年1月20日
 *      Author: Administrator
 */

#ifndef P1D2_DEMO_SALES_DATA_H_
#define P1D2_DEMO_SALES_DATA_H_

struct Sales_data {
	//新成员：关于Sales_data对象的操作
	std::string isbn() const {
		return this->bookNo;
	}
	Sales_data& combine(const Sales_data&);
	double avg_price() const;

	//数据成员没有变
	std::string bookNo;
	unsigned units_sold = 0;
	double revenue = 0.0;
};

//Sales_data的非成员接口函数
Sales_data add(const Sales_data&, const Sales_data&);
std::ostream &print(std::ostream&, const Sales_data&);
std::istream &print(std::istream&, Sales_data&);

double Sales_data::avg_price() const {
	if (units_sold)
		return revenue / units_sold;
	else
		return 0;
}

Sales_data & Sales_data::combine(const Sales_data&rhs) {
	units_sold += rhs.units_sold; //把rhs的成员加到this对象的成员上
	revenue += rhs.revenue;
	return *this;
}

#endif /* P1D2_DEMO_SALES_DATA_H_ */
